package com.yuntu.utils;

import org.apache.log4j.Logger;

import java.io.IOException;
import java.io.InputStream;
import java.sql.*;
import java.util.Properties;

/**
 * @author MrWang-shuizhishuiheshui
 * @description 工具类  静态加载JDBC配置文件信息,建立连接,释放资源
 */
public class JDBCUtils {
    //创建log对象
    private static final Logger log=Logger.getLogger(JDBCUtils.class);

    //创建用于存放链接数据库的四个基本信息
    private static String DRIVER=null;
    private static String URL=null;
    private static String USER=null;
    private static String PASSWORD=null;

    /*在静态代码块中引入配置文件的信息*/
    static{
        //创建Properties对象
        Properties prop=new Properties();
        //创建输入流对象,读取配置文件
        InputStream is = JDBCUtils.class.getClassLoader().getResourceAsStream("JDBC.properties");
        //用Properties对象解析流信息
        try {
            prop.load(is);
        } catch (IOException e) {
            log.error("JDBC配置文件加载失败");
            e.printStackTrace();
        }
        //将解析的信息依次获取
        DRIVER=prop.getProperty("jdbc.driver");
        URL=prop.getProperty("jdbc.url");
        USER=prop.getProperty("jdbc.user");
        PASSWORD=prop.getProperty("jdbc.password");
    }


    /**
     * 获取连接对象
     */
    public static Connection getConnect(){
        Connection con=null;
        try {
            //1.加载驱动
            Class.forName(DRIVER);
            //2.通过驱动管理员获取连接对象
            con= DriverManager.getConnection(URL,USER,PASSWORD);
            log.info("连接成功");
        } catch (ClassNotFoundException e) {
            log.error("连接失败,架包加载有问题");
            e.printStackTrace();
        } catch (SQLException e) {
            log.error("连接加载有问题");
            e.printStackTrace();
        }
        return con;
    }

    /**
     * 释放资源
     */
    public static void closeAll(Connection con, PreparedStatement ps , ResultSet rs){
        if (rs!=null){
            try {
                rs.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
        if (ps!=null){
            try {
                ps.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
        if (con!=null){
            try {
                con.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
        log.info("资源释放成功");
    }



}
